<?php
/**
 * [KeCms] Copyright (c) 2017 kecms.cn
 * [Author] King east ( 1207877378@qq.com )
 */

namespace app\admin\behavior;


use app\admin\model\Admin;
use ke\Controller;
use ke\Glo;
use think\Cache;
use think\Response;

class Auth extends Controller
{
    // 不验证授权的路由
    private $noRoute=[
        'Auth/login'
    ];

    private function toLogin()
    {
        if($this->isAjax()){
            $this->error('登录超时，请重新登录。');
        }
        $this->redirect('auth/login');
    }

    public function run($request)
    {
        $control=$request->controller() . '/' . $request->action();
        if(in_array($control,$this->noRoute)){
            return;
        }
        $info=session('adminInfo');
        if(empty($info) || !is_array($info)){
            $this->toLogin();
        }
        $token=Cache::get('adminToken/'.$info['id']);
        if(empty($token)){ // 令牌过期，重新获取。
            $info=Admin::where('id',$info['id'])->find();
            if(!$info){
                $this->toLogin();
            }
            if($info->status===1){
                $this->error("你的管理账号“{$info->user}”已经被锁定",'auth/login');
            }
            $token=$info->token;
            Cache::set('adminToken/'.$info->id,$token,1800);
            $info=$info->toArray();
            session('adminInfo',$info);
        }
        if($token!=$info['token']){
            $this->toLogin();
        }
        $request->adminInfo=$info;
    }

}